package cn.campus.service.article;

import cn.campus.pojo.article.dto.ArticleDTO;
import cn.campus.pojo.article.dto.PageInfo;
import cn.campus.pojo.article.po.Article;

import java.util.List;

/**
 * 文章服务接口
 * Created by linyanbin on 2018/9/15.
 */
public interface ArticleService {

    /**
     * 创建/更新文章
     * @param articleDTO
     * @return
     */
    ArticleDTO save(ArticleDTO articleDTO);

    /**
     * 根据文章id查询，多表
     * @param articleId
     * @param intervalVisitTime 间隔访问的时间差，决定是否缓存
     * @return
     */
    ArticleDTO findById(String articleId, long intervalVisitTime);

    /**
     * 根据文章id查询，单表
     * @param articleId
     * @return
     */
    Article findById(String articleId);

    /**
     * 根据Id删除文章
     * @param articleId
     */
    void deleteById(String articleId);

    /**
     * 修改文章状态
     * @param articleId
     */
    void updateStatusById(String articleId, Integer status);

    /**
     * 分页查找文章
     * @param isIncludeUserInfo 是否需要返回文章发布者的信息
     * @param page
     * @param size
     * @return
     */
    PageInfo<ArticleDTO> findPage(boolean isIncludeUserInfo, Integer page, Integer size);

    /**
     * 获取访问量前N的文章
     * @param number
     * @return
     */
    List<ArticleDTO> findTopListByViewCount(Integer number);

    /**
     * 获取文章访问量
     * @param articleId
     * @return
     */
    Integer getViewCount(String articleId);

}
